﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using veterinaria.negocio;
using System.Web.SessionState;

namespace veterinaria.web
{
    public partial class ABMUsuario : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                cargarGrilla();
                cargarRoles();
                cargarEmpleados();
            }

        }

        protected void btnNuevo_Click(object sender, EventArgs e)
        {
            string nombre = txtNick.Text;
            string contraseña = txtContraseña.Text;
            string email = txtEmail.Text;
            int idRol = int.Parse(ddlRoles.SelectedValue);
            int nroDoc = int.Parse(ddlEmpleados.SelectedValue);

            GestorUsuarios.insertar(nroDoc, nombre, contraseña, email, idRol);
            cargarGrilla();
            limpiarCampos();
        }

        protected void btnModificar_Click(object sender, EventArgs e)
        {
            string nombre = txtNick.Text;
            string email = txtEmail.Text;
            string contraseña = txtContraseña.Text;
            int idRol = int.Parse(ddlRoles.SelectedValue);
            int idUsuario = int.Parse(ViewState["Codigo"].ToString());

            GestorUsuarios.modificar(nombre,contraseña,email,idRol,idUsuario);
            cargarGrilla();
            limpiarCampos();
        }

        protected void gdvUsuarios_SelectedIndexChanged(object sender, EventArgs e)
        {
            int idUsuario = (int)gdvUsuarios.DataKeys[gdvUsuarios.SelectedRow.RowIndex]["Codigo"];
            int nroDoc = (int)gdvUsuarios.DataKeys[gdvUsuarios.SelectedRow.RowIndex]["Nro_Doc_Empleado"];
            int idRol = (int)gdvUsuarios.DataKeys[gdvUsuarios.SelectedRow.RowIndex]["Id_Rol"];
            string contraseña = (string)gdvUsuarios.DataKeys[gdvUsuarios.SelectedRow.RowIndex]["Contraseña"];

            ddlEmpleados.SelectedValue = nroDoc.ToString();
            txtNick.Text = gdvUsuarios.SelectedRow.Cells[2].Text;
            txtEmail.Text = gdvUsuarios.SelectedRow.Cells[3].Text;
            ddlRoles.SelectedValue = idRol.ToString();
            txtContraseña.Text = contraseña;
            txtContraseñaRep.Text = contraseña;
            ViewState["Codigo"] = idUsuario;

        }


        protected void btnBorrar_Click(object sender, EventArgs e)
        {
            if (gdvUsuarios.SelectedRow != null)
            {
                int idUsuario = int.Parse(ViewState["Codigo"].ToString());
                GestorUsuarios.borrar(idUsuario);
                cargarGrilla();
            }
            else
            {
                lblAviso.Text = "Debe seleccionar un usuario para eliminar.";
            }
            limpiarCampos();
        }


        //--------------------------------------//
        //-------- MÉTODOS AUXILIARES ----------//
        //--------------------------------------//

        private void cargarGrilla()
        {
            gdvUsuarios.DataKeyNames = new string[4] { "Codigo", "Nro_Doc_Empleado", "Id_Rol", "Contraseña" };
            gdvUsuarios.DataSource = GestorUsuarios.verTodos();
            gdvUsuarios.DataBind();
        }

        private void cargarRoles()
        {
            ddlRoles.DataSource = GestorUsuarios.getRoles();
            ddlRoles.DataValueField = "Id_Rol";
            ddlRoles.DataTextField = "Nombre";
            ddlRoles.DataBind();
        }

        private void cargarEmpleados()
        {
            ddlEmpleados.DataSource = GestorUsuarios.getEmpleados();
            ddlEmpleados.DataValueField = "Documento";
            ddlEmpleados.DataTextField = "Apellido";
            ddlEmpleados.DataBind();
        }

        private void limpiarCampos()
        {
            txtNick.Text = "";
            txtEmail.Text = "";
            txtContraseña.Text = "";
            txtContraseñaRep.Text = "";
        }
    }
}